package com.ruoyi.recipe.service;

import java.util.List;
import com.ruoyi.recipe.domain.RecipeCategoryDish;
import org.apache.ibatis.annotations.Param;

/**
 * 菜品和类别Service接口
 * 
 * @author ruoyi
 * @date 2024-12-03
 */
public interface IRecipeCategoryDishService 
{
    /**
     * 查询菜品和类别
     *
     * @param recipeCategoryDish 菜品和类别
     * @return 菜品和类别
     */
    public RecipeCategoryDish selectRecipeCategoryDishByKeys(RecipeCategoryDish recipeCategoryDish);

    /**
     * 查询菜品和类别列表
     *
     * @param recipeCategoryDish 菜品和类别
     * @return 菜品和类别集合
     */
    public List<RecipeCategoryDish> selectRecipeCategoryDishList(RecipeCategoryDish recipeCategoryDish);

    /**
     * 查询菜品和类别列表(含菜品和类别的信息)
     *
     * @param recipeCategoryDish 菜品和类别
     * @return 菜品和类别集合
     */
    public List<RecipeCategoryDish> selectRecipeCategoryDishFullList(RecipeCategoryDish recipeCategoryDish);

    /**
     * 查询某个类别下的菜品列表
     *
     * @param categoryId 菜品Id
     * @return 菜品和类别集合
     */
    public List<RecipeCategoryDish> selectRecipeCategoryDishByCategoryId(Long categoryId);

    /**
     * 查询某个菜品的类别列表
     *
     * @param dishId 类别Id
     * @return 菜品和类别集合
     */
    public List<RecipeCategoryDish> selectRecipeCategoryDishByDishId(Long dishId);

    /**
     * 新增菜品和类别
     *
     * @param recipeCategoryDish 菜品和类别
     * @return 结果
     */
    public int insertRecipeCategoryDish(RecipeCategoryDish recipeCategoryDish);

    /**
     * 批量新增菜品和类别
     *
     * @param list 菜品和类别集合
     * @return 结果
     */
    public int batchInsertRecipeCategoryDish(List<RecipeCategoryDish> list);

    /**
     * 批量新增菜品和类别
     *
     * @param categoryId 类别ID
     * @param dishIds 菜品ID
     * @return 结果
     */
    public int batchInsertRecipeCategoryDish(Long categoryId, String dishIds);

    /**
     * 删除某个类别下的全部菜品
     *
     * @param categoryId 菜品Id
     * @return 结果
     */
    public int deleteRecipeCategoryDishByCategoryId(Long categoryId);

    /**
     * 删除多个类别下的全部菜品
     *
     * @param categoryIds 类别ID数组
     * @return 结果
     */
    public int deleteRecipeCategoryDishByCategoryIds(String[] categoryIds);

    /**
     * 删除某个菜品的全部类别
     *
     * @param dishId 类别Id
     * @return 结果
     */
    public int deleteRecipeCategoryDishByDishId(Long dishId);

    /**
     * 删除多个菜品下的全部类别
     *
     * @param dishIds 菜品ID数组
     * @return 结果
     */
    public int deleteRecipeCategoryDishByDishIds(String[] dishIds);

    /**
     * 删除菜品和类别
     *
     * @param recipeCategoryDish 菜品和类别
     * @return 结果
     */
    public int deleteRecipeCategoryDish(RecipeCategoryDish recipeCategoryDish);

    /**
     * 删除菜品和类别
     *
     * @param categoryId 类别ID
     * @param dishIds 菜品ID
     * @return 结果
     */
    public int deleteRecipeCategoryDishByKeys(@Param("categoryId") Long categoryId, @Param("dishIds") Long[] dishIds);

    /**
     * 删除菜品和类别
     *
     * @param categoryId 类别ID
     * @param dishIds 菜品ID
     * @return 结果
     */
    public int deleteRecipeCategoryDishByKeys(@Param("categoryId") Long categoryId, @Param("dishIds") String dishIds);
}
